<?php

class Default_Model_Confirm
{
    private $_userId;
    private $_key;
	private $_id;
	private $_mapper;

    public function __construct(array $options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    public function __set($name, $value)
    {
        $method = 'set' . $name;
        if (('mapper' == $name) || !method_exists($this, $method)) {
            throw new Exception('Invalid user property');
        }
        $this->$method($value);
    }

    public function __get($name)
    {
        $method = 'get' . $name;
        if (('mapper' == $name) || !method_exists($this, $method)) {
            throw new Exception('Invalid user property');
        }
        return $this->$method();
    }

    public function setOptions(array $options)
    {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    public function setUserId($userId)
    {
        $this->_userId = (int) $userId;
        return $this;
    }

    public function getUserId()
    {
        return $this->_userId;
    }

	public function setKey($key)
	{
		$this->_key = (string) $key;
		return $this;
	}

    public function getKey()
    {
        return $this->_key;
    }

    public function setId($id)
    {
        $this->_id = (int) $id;
        return $this;
    }

    public function getId()
    {
        return $this->_id;
    }

    public function setMapper($mapper)
    {
        $this->_mapper = $mapper;
        return $this;
    }

    public function getMapper()
    {
        if (null === $this->_mapper) {
            $this->setMapper(new Default_Model_ConfirmMapper());
        }
        return $this->_mapper;
    }

	public function insertConfirmationKey($userId, $key, $email){
        return $this->getMapper()->insertConfirmationKey($userId, $key, $email);				
	}
	
	public function confirmNewUser($key){
        return $this->getMapper()->confirmNewUser($key);		
	}

	public function deleteConfirmationKey($userId){
		return $this->getMapper()->deleteConfirmationKey($userId);
	}
	
	public function emailExists($email){
		return $this->getMapper()->emailExists($email);
	}
/*
    public function find($id)
    {
        $this->getMapper()->find($id, $this);
        return $this;
    }

    public function fetchAll()
    {
        return $this->getMapper()->fetchAll();
    }
*/
}
